package com.nbBoot.common;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.web.context.WebServerInitializedEvent;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.ApplicationListener;
import org.springframework.context.EnvironmentAware;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;

/**
 * 启动监听器
 * EnvironmentAware -- 环境变量
 * ApplicationContextAware -- 上下文
 * ApplicationListener -- 监听器
 *
 * @author 王永吉
 * @date 2019/6/21 13:28
 */
@Configuration
@Slf4j
public class WebListener implements ApplicationContextAware, EnvironmentAware, ApplicationListener<WebServerInitializedEvent> {

    /**
     * 启动流程
     * main方法启动
     * 执行 读取配置文件 此时可以实现EnvironmentAware接口 获取配置文件对象
     * 然后 创建容器对象 此时可以实现ApplicationContextAware 接口 获取容器实例
     * 然后 实例化自定义的Bean对象
     * 然后 配置拦截器
     * 然后 配置跨域
     * 容器创建完成 此时可以实现ApplicationListener接口继续执行其他逻辑
     */

    /**
     * 1.获取Spring配置文件对象
     */
    @Override
    public void setEnvironment(Environment environment) {
        log.error("...............读取Spring配置文件完成..........");
    }

    /**
     * 2.获取Spring容器对象
     */
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) {
        log.error("...............获取Spring容器对象..........");
    }

    /**
     * Spring启动完成监听
     */
    @Override
    public void onApplicationEvent(WebServerInitializedEvent webServerInitializedEvent) {
        log.error("...............Spring启动完成监听..........");
    }
}
